iOS Alamofire实时检测网络状态

实时检测网络状态

1. 创建全局NetworkReachabilityManager对象

1
let newsHomeNetworkReachabilityManager = NetworkReachabilityManager(host: "http://www.baidu.com")

2. 开启网络监控

1
newsHomeNetworkReachabilityManager?.startListening()

3. 监听网络变化

1
2
3
4
5
6
7
8
9
10
11
12
newsHomeNetworkReachabilityManager?.listener = { state in
switch state {
case .unknown:
LCZProgressHUD.showError(title: "似乎与网络断开了连接!")
break
case .notReachable:
LCZProgressHUD.showError(title: "似乎与网络断开了连接!")
break
case .reachable(_):
break
}
}

4. 不需要时停止监控

1
newsHomeNetworkReachabilityManager?.stopListening()

5. 其它常用属性

1
2
3
4
5
6
7
open var isReachable: Bool // 当前网络是蜂窝网络或者是WiFi连接

open var isReachableOnWWAN: Bool // 当前网络是通过蜂窝网络连接

open var isReachableOnEthernetOrWiFi: Bool // 当前网络是通过WiFi网络连接

open var networkReachabilityStatus: NetworkReachabilityStatus // 当前网络状态

6. 注意事项

6.1 NetworkReachabilityManager不能为局部变量,否则会提前释放

6.2 每次使用需new一个新的newsHomeNetworkReachabilityManager,否则只响应最后监控回调

坚持原创技术分享,您的支持将鼓励我继续创作!